FROM docker.m.daocloud.io/library/golang:alpine as builder
ARG GOPROXY=https://goproxy.cn,direct
# 指定构建过程中的工作目录
WORKDIR /app

# 将当前目录（dockerfile所在目录）下所有文件都拷贝到工作目录下（.dockerignore中文件除外）
COPY . /app/
# 执行代码编译命令。操作系统参数为linux，编译后的二进制产物命名为main，并存放在当前目录下。

RUN CGO_ENABLED=0 go build -ldflags="-w -s -extldflags -static" -o main .

# 选用运行时所用基础镜像（GO语言选择原则：尽量体积小、包含基础linux内容的基础镜像）

FROM scratch

# 容器默认时区为UTC，如需使用上海时间请启用以下时区设置命令
#RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone

###############################################################################
#                                INSTALLATION
###############################################################################
ENV WORKDIR  /app
# 不再需要复制webmb目录，因为它已经嵌入到二进制文件中
# 但需要创建cert目录用于存放证书文件
COPY --from=builder /app/main $WORKDIR/main
# 在scratch镜像中创建cert目录
WORKDIR $WORKDIR/cert
WORKDIR $WORKDIR

###############################################################################
#                                   START
###############################################################################
WORKDIR $WORKDIR
EXPOSE 80 443
ENTRYPOINT ["./main"]
